#include "evaluator.h"

#define TF(x) x? "TRUE" : "FALSE"

string cString;
boolean end;

int main() {
	Sheet Sheet1;
	string File;
	
	File = CharToString ("evaluator_tes.bno");
	Baca_WorkSheet(File, &Sheet1);
	printf("PEMBACAAN FILE DARI evaluator_tes.bno SUKSES !!\n");
	
	printf("---------------------\nTampilkan Semua: \n");	
	DisplayAll(Sheet1);

		
	printf ("\n\nstart of Driver\n\n");
	string s1,s2,f,hasil;
	char x;
	boolean isString=0;
	while (1) {
		isString=0;
		printf(">");
		s1.length=0;
		scanf("%c",&x);
		while (x!='\n')
			{	
				if(x==39) {isString=!isString;}
				if((x!=' ')||(isString)) {
					s1.s[s1.length]=x;
					s1.length++;
					if ((x==',')||(x==')')||(x=='<')
						||(x=='>')||(x=='!')||(x=='+')
						||(x=='-')||(x=='/')||(x=='*')
						||(x=='^')||(x=='<')||(x=='>')
						||(x=='=')) {
							isString=0;
						}
					}
				scanf("%c",&x);
			}
		s1.s[s1.length]='\0';
		if (IsStringEqSpec(s1,CharToString("display"))==1) {
			DisplayAll(Sheet1);
			} else
		if (IsStringEqSpec(s1,CharToString("exit"))==1) {
			printf("SAM KUAT !! \n");
			return 0;
			}
		else {
		if(s1.length!=0) {
			printf("input : %s\n",s1.s);
			hasil=eval(s1,Sheet1);
			printf("eval  : %s\n",hasil.s);
			}}
	}
	
//	char x[256];	
//	printf("pow (-3,7) = %s\n",POW(CharToString("-3"),CharToString("7")));
	// if (0) {	
	// s1 = CharToString("=-sum ( A4 : B12 )  * -B2");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1 = CharToString("=-sum ( A4 : B12 )  * -B2");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1=CharToString("=(or(and(true,false),not((3>2))))");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1=CharToString("=sqr(sqrt(4+12)+1)");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1=CharToString("=-3^(5+3-1^2)");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);


	// s1=CharToString("=31^(0.21^(1.2324+3))");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1=CharToString("=1 + ( 2*( 3+( (4* 12)/ (5* 10)))) + 3^4 + (8-3)^-3.25");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);
	
	// s1=CharToString("=3*7^2.25");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1 = CharToString("=(concat ('aku adalah,'string hebat)");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);
	
	// s1 = CharToString("= A1 = B2");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1 = CharToString("=(11 <= 13)");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1 = CharToString("=!(12 >= 12)");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);
	
	// s1 = CharToString("=!(  'ayam goreng tepung' !=  'ayam goreng tepung'  )");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);
	
	// s1 = CharToString("=!('ayam goreng kremes'  <              'ayam goreng tepung')");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);

	// s1 = CharToString("=-B2  ");
	// printf("\n--------------------------\nstring awal : %s\n",s1.s);
	// f=MakeFormula(s1);
	// printf("make formula : %s\n",f.s);
	// hasil=recursive_eval(f);
	// printf("hasil = %s\n",hasil.s);
	
	// printf("\ndriver end.\n");
	// }
	return 0;

}
